package com.woniuxy.yoga.business.service;

import com.woniuxy.yoga.business.dao.model.StoreClassroom;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.yoga.business.model.dto.storeclassroom.ClassroomNormalDto;
import com.woniuxy.yoga.business.model.dto.storeclassroom.StoreClassroomAddDTO;
import com.woniuxy.yoga.business.model.dto.storeclassroom.StoreClassroomByIdDTO;
import com.woniuxy.yoga.business.model.dto.storeclassroom.StoreClassroomUpdateDTO;
import com.woniuxy.yoga.business.model.param.storeclassroom.*;
import com.woniuxy.yoga.commons.core.model.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 门店教室表 服务类
 * </p>
 *
 * @author 韦用文,刘存益,郎腾霄
 * @since 2023年11月28日
 */
public interface StoreClassroomService extends IService<StoreClassroom> {
    /**
     * 门店添加教室
     * @param param
     * @return
     * @throws Exception
     */
    StoreClassroomAddDTO addStoreClassroom(StoreClassroomAddParam param);
    /**
     * 修改教室名字
     * @param param
     * @return
     * @throws Exception
     */
    StoreClassroomUpdateDTO updateStoreClassroom(StoreClassroomUpdateParam param);
    /**
     * 商家删除教室
     * @param param
     * @return
     * @throws Exception
     */
    void deleteStoreClassroom(StoreClassroomDeleteParam param);
    /**
     * 分页查询场馆教室信息
     * @param param
     * @return
     * @throws Exception
     */
    PageInfo selectPageStoreClassroomInfo(StoreSelectClassroomPageParam param);
    /**
     * 查询所有的教室，并按 id->详情 存储
     * @param param
     * @return
     * @throws Exception
     */
    Map<Integer, ClassroomNormalDto> selNormalByIds(StoreClassroomIdsParam param);
    /**
     * 根据教室id查询教室信息
     * @param storeClassroomId
     * @return
     * @throws Exception
     */
    StoreClassroomByIdDTO selNormalById(Integer storeClassroomId);
    /**
     * 商家查询场馆所有可用教室
     * @param businessId
     * @return
     */
    List<ClassroomNormalDto> getAllNormalClassroomsByBusinessId(Integer businessId);

    /**
     * 禁用教室
     * @param classroomId classroomId
     */
    void disableClassroom(Integer classroomId);

    /**
     * 启用教室
     * @param classroomId classroomId
     */
    void enableClassroom(Integer classroomId);

    /**
     * 查询可用教室集合
     * @param storeId 门店id
     * @return List<ClassroomNormalDto>
     */
    List<ClassroomNormalDto> findUsefulClassroom(Integer storeId);
}
